---
title: DCBS 1502 transfer handling
summary: Creates, retrieves, and processes DCBS 1502 transfer file records.
status: draft
owner: SAIF Documentation Generator
last_reviewed: 2026-08-21
library: SAIF.Business.Claim
reference_type: embedded
operation_id: 1502-transfer
trigger: Transfer file creation, unprocessed-transfer sweep, or marking a transfer as processed
---

# DCBS 1502 transfer handling

Manages the lifecycle of DCBS 1502 transfer file records: creation, retrieval of unprocessed transfers, and marking transfers as processed.

| Field | Value |
| --- | --- |
| **Operation ID** | 1502-transfer |
| **Trigger** | Caller creates a transfer record, sweeps for unprocessed transfers, or marks a transfer as processed |
| **Inputs** | ClaimID, FileId, FileName, TransferDate |
| **Outputs** | Transfer records; processed-date updates |
| **Primary components** | `cls1502Transfer`, `cls1502TransferList` |
| **Entry point** | SAIF.Business.Claim/cls1502Transfer.vb |

## Steps

1. Standard BOF create validates the claim ID and filing reason ([BR-001](../business-rules.md#br-001-1502-transfer-claim-id-required), [BR-002](../business-rules.md#br-002-1502-transfer-filing-reason-required)).
2. `Create()` obtains its key via `DataPortalInfo.GetNextSeqNum` rather than the declared `CreateSQL` property ([SQL-001](../sql/SQL-001.md)).*
3. Insert the new transfer record ([SQL-004](../sql/SQL-004.md), [CL_1502_DCBS_TRANSFER](../database-tables.md#cl_1502_dcbs_transfer)).
4. `GetTransferList()` retrieves unprocessed transfers for a specific claim ([SQL-009](../sql/SQL-009.md)); only rows with `PROCESSED_DATE IS NULL` are eligible.
5. `GetUnprocessedTransferList()` retrieves all unprocessed transfers across claims, ordered by file name, for the transfer sweep ([SQL-010](../sql/SQL-010.md)).
6. Mark a transfer as processed by updating `PROCESSED_DATE` ([SQL-037](../sql/SQL-037.md), [CL_1502_DCBS_TRANSFER](../database-tables.md#cl_1502_dcbs_transfer)) — the only schema-qualified statement (`CLM_DBA`) in the library, while the matching INSERT/DELETE/SELECT are unqualified.*
7. Delete a transfer record when requested ([SQL-052](../sql/SQL-052.md)).

## Process flow

The following diagram visualizes this operation's control flow.

```mermaid
flowchart TD
	Start([Create transfer request]) --> Validate{"ClaimID and FilingReason<br>valid?"}
	Validate -->|No| ErrRule([Broken rule: save blocked])
	Validate -->|Yes| GetSeq["Get next sequence via<br>DataPortalInfo.GetNextSeqNum"]
	GetSeq --> Insert[Insert CL_1502_DCBS_TRANSFER]
	Insert --> Sweep[Unprocessed-transfer sweep<br>GetUnprocessedTransferList]
	Sweep --> Process["Mark PROCESSED_DATE on<br>eligible transfer"]
```

## Failure and edge-case behavior
- Insert, update, and delete failures raise DB-contention errors ([BR-012](../business-rules.md#br-012-optimistic-concurrency-contention-check)) when `RowsAffected` does not match the expected count.
- Schema qualification is inconsistent: only the UPDATE statement (SQL-037) is qualified with `CLM_DBA`; INSERT, DELETE, and SELECT statements against the same table are unqualified.*

## Related documentation
- [Operations and processes](../operations-processes.md)
- [Business rules](../business-rules.md)
- [SQL catalog](../sql/index.md)
- [Database tables](../database-tables.md)

> **Note:** Statements marked with `*` were inferred from code structure, naming
> conventions, or contextual evidence where direct confirmation was not available
> in source artifacts. Statements marked with `**` could not be confirmed; treat
> as unknown until verified.

## Sources
- SAIF.Business.Claim/cls1502Transfer.vb
